import { UserInfo } from "./utils/typing";

export default (initialState: { currentUser: UserInfo, hasRoutes: [string] } | undefined) => {
  const currentUser = initialState?.currentUser;
  const hasRoutes = initialState?.hasRoutes;

  // 在这里按照初始化数据定义项目中的权限，统一管理
  // 参考文档 https://umijs.org/docs/max/access

  // 审核其他人的数据 不能审核自己的数据
  const canReviewData = (data: any) => {
    // 同部门且不是自己提交的数据可以审核
    return data.Department in (currentUser?.groups || []) &&
      data.SubmitUser !== currentUser?.name;
  };

  const canViewAdminPage = () => {
    return currentUser?.isAdmin === true;
  }

  return {
    canViewAdminPage,
    canReviewData,
    // 控制路由及菜单
    adminRouteFilter: () => currentUser?.isAdmin, // 只有管理员可访问
    noAdminRouteFilter: () => !currentUser?.isAdmin, // 非管理员可访问
    normalRouteFilter: (route: any) => hasRoutes?.includes(route.name), // initialState 中包含了的路由才有权限访问
  };
};
